import java.util.Arrays;

public class Text {

    //        1、编写Java应用程序，实现判断给定的一个整数的奇偶性。（要求使用逻辑运算符和位运算符实现）
    public static void main1(String[] args) {
        int num = 77;
        if ((num & 1) == 1) {
            System.out.println(num + "是奇数");
        } else {
            System.out.println(num + "是偶数");
        }
    }

    //        2、1-1000这1000个数放在含有1001个元素的数组中，只有唯一的一个元素值重复，其他均只出现一次。每个数组元素只能访问一次，设计一个算法，将它找出来；不用辅助存储空间，请编程实现。
    public static void main2(String[] args) {
        int[] array = new int[1001];
        for (int i = 0; i < 1001; i++) {
            array[i] = i;
        }
        array[0] = 99;
        int num = 0;
        for (int i = 0; i < 1001; i++) {
            num = num ^ array[i];
        }
        for (int i = 1; i <= 1000; i++) {
            num = num ^ i;
        }
        System.out.println("重复数字为：" + num);
    }
//        3、对于任意一个四位数（各位数字不全相同），重新排列组成最大数和最小数，用大数减小数，重复此过程，最终会得到6174（数字黑洞）。

//        输入格式：一个四位整数

    //        输出格式：计算过程，直到得到6174为止
    public static void main3(String[] args) {
       int num=8698;
       while(num!=6174){
           int a=num/1000;
           int b=(num%1000)/100;
           int c=(num%100)/10;
           int d=num%10;

           int[] array=new int[]{a,b,c,d};
           Arrays.sort(array);

           int max=array[3]*1000+array[2]*100+array[1]*10+array[0];
           int min=array[0]*1000+array[1]*100+array[2]*10+array[3];

           int num1=max-min;

           System.out.println(max+"-"+min+"="+num1);

           num=num1;

       }
    }

}
